Computer systems may be configured to generate and share with other computer systems via a computer network a variety of data streams, such as audio/voice streams in a teleconferencing session, video streams during a videoconferencing session, and streams of computational data units in a network multiprocessing session. The network connecting the computer systems may present some characteristics pertinent to the sharing of the data streams, such as the upload bandwidth and download bandwidth of the computer systems. Various network topologies may be selected for sharing the data among the users, and the network topologies may have comparative performance advantages and disadvantages according to the network characteristics. For example, a network comprising one computer system with a high-bandwidth connection and many computer systems may benefit from utilizing the high-bandwidth computer system as a centralized server, which receives the data streams from all of the low-bandwidth computer systems and retransmits the combined data stream to all low-bandwidth computer systems. Some retransmission delay may be involved, but the performance of the low-bandwidth machines is improved by having to send only one data stream and receive only one data stream. By contrast, among a set of computer systems with sufficiently high-bandwidth connections, a multicasting scenario may be advantageous, whereby each computer system sends its data stream directly to all other computer systems. This network topology reduces the data stream latency by limiting retransmission delays.
Computer systems may also be configured to share data according to a peer-to-peer model. In this model, computer systems cooperate to distribute a data set to all requesting computer systems by receiving portions of the data set from a variety of computer systems that have portions of the data set, and by retransmitting the received portions to computer systems that do not have these portions of the data portions. The network topology of the peer-to-peer network may provide improved performance in the distribution of the data set to all requesting computer systems.